--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
tests/frontend/settingsTabs.test.js bce42bcdce0e7d2c6d78228e864a4cd1d974cc82 (bce42bcd) Text, 5.10 KB
T8b949e// SPDX-License-Identifier: 0BSD
Tff7b72import Tb4b4b4{ Te6edf3describeTb4b4b4, Te6edf3expectTb4b4b4, Te6edf3it Tb4b4b4} Tff7b72from Ta5d6ff"vitest"Tb4b4b4;
Tff7b72import Te6edf3en Tff7b72from Ta5d6ff"../../meshchatx/src/frontend/locales/en.json"Tb4b4b4;
Tff7b72import Tb4b4b4{
Te6edf3ALL_SETTINGS_SECTIONSTb4b4b4,
Te6edf3DEFAULT_SETTINGS_TABTb4b4b4,
Te6edf3getSettingsTabTb4b4b4,
Te6edf3normalizeSettingsTabIdTb4b4b4,
Te6edf3SETTINGS_TABSTb4b4b4,
Te6edf3settingsSectionBelongsToTabTb4b4b4,
Te6edf3settingsTabForSectionTb4b4b4,
Tb4b4b4} Tff7b72from Ta5d6ff"../../meshchatx/src/frontend/js/settings/settingsTabs.js"Tb4b4b4;
Tff7b72const Te6edf3KNOWN_SECTIONS_FROM_SETTINGS_PAGE Tff7b72= Tb4b4b4[
Ta5d6ff"strangerProtection"Tb4b4b4,
Ta5d6ff"banishment"Tb4b4b4,
Ta5d6ff"stickers"Tb4b4b4,
Ta5d6ff"gifs"Tb4b4b4,
Ta5d6ff"maintenance"Tb4b4b4,
Ta5d6ff"plugins"Tb4b4b4,
Ta5d6ff"telephony"Tb4b4b4,
Ta5d6ff"desktop"Tb4b4b4,
Ta5d6ff"android"Tb4b4b4,
Ta5d6ff"archiver"Tb4b4b4,
Ta5d6ff"nomadRenderer"Tb4b4b4,
Ta5d6ff"crawler"Tb4b4b4,
Ta5d6ff"appearance"Tb4b4b4,
Ta5d6ff"battery"Tb4b4b4,
Ta5d6ff"visualiser"Tb4b4b4,
Ta5d6ff"location"Tb4b4b4,
Ta5d6ff"language"Tb4b4b4,
Ta5d6ff"networkSecurity"Tb4b4b4,
Ta5d6ff"transport"Tb4b4b4,
Ta5d6ff"interfaces"Tb4b4b4,
Ta5d6ff"blocked"Tb4b4b4,
Ta5d6ff"privacyData"Tb4b4b4,
Ta5d6ff"auth"Tb4b4b4,
Ta5d6ff"webExposure"Tb4b4b4,
Ta5d6ff"infrastructure"Tb4b4b4,
Ta5d6ff"csp"Tb4b4b4,
Ta5d6ff"messages"Tb4b4b4,
Ta5d6ff"notificationSounds"Tb4b4b4,
Ta5d6ff"propagation"Tb4b4b4,
Ta5d6ff"shortcuts"Tb4b4b4,
Tb4b4b4]Tb4b4b4;
Te6edf3describeTb4b4b4(Ta5d6ff"settingsTabs"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3itTb4b4b4(Ta5d6ff"defaults to general tab"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3DEFAULT_SETTINGS_TABTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"general"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3normalizeSettingsTabIdTb4b4b4(Tff7b72undefinedTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"general"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3normalizeSettingsTabIdTb4b4b4(Tff7b72nullTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"general"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3normalizeSettingsTabIdTb4b4b4(Ta5d6ff""Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"general"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3normalizeSettingsTabIdTb4b4b4(Ta5d6ff" "Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"general"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3normalizeSettingsTabIdTb4b4b4(Ta5d6ff"invalid"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"general"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"normalizes valid tab ids and trims whitespace"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3normalizeSettingsTabIdTb4b4b4(Ta5d6ff"privacy"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"privacy"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3normalizeSettingsTabIdTb4b4b4(Ta5d6ff" privacy "Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"privacy"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"rejects case-mismatched tab ids"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3normalizeSettingsTabIdTb4b4b4(Ta5d6ff"General"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"general"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3normalizeSettingsTabIdTb4b4b4(Ta5d6ff"PRIVACY"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"general"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"maps sections to tabs"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3settingsTabForSectionTb4b4b4(Ta5d6ff"appearance"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"general"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3settingsTabForSectionTb4b4b4(Ta5d6ff"battery"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"general"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3settingsTabForSectionTb4b4b4(Ta5d6ff"location"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"general"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3settingsTabForSectionTb4b4b4(Ta5d6ff"messages"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"messages"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3settingsTabForSectionTb4b4b4(Ta5d6ff"archiver"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"nomad"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3settingsTabForSectionTb4b4b4(Ta5d6ff"plugins"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"plugins"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3settingsTabForSectionTb4b4b4(Ta5d6ff"telephony"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"network"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3settingsTabForSectionTb4b4b4(Ta5d6ff"banishment"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"privacy"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3settingsTabForSectionTb4b4b4(Ta5d6ff"selftest"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"maintenance"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3settingsTabForSectionTb4b4b4(Ta5d6ff"infrastructure"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"maintenance"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3settingsTabForSectionTb4b4b4(Ta5d6ff"unknown-section"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeNullTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"includes every section exactly once"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3seen Tff7b72= Te6edf3SETTINGS_TABSTb4b4b4.Te6edf3flatMapTb4b4b4(Tb4b4b4(Te6edf3tabTb4b4b4) Tb4b4b4=> Te6edf3tabTb4b4b4.Te6edf3sectionsTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tff7b72new Tffa657SetTb4b4b4(Te6edf3seenTb4b4b4)Tb4b4b4.Te6edf3sizeTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Te6edf3seenTb4b4b4.Te6edf3lengthTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3seenTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"language"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3seenTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"networkSecurity"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3seenTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Ta5d6ff"maintenance"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"exports ALL_SETTINGS_SECTIONS matching flattened tab sections"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3ALL_SETTINGS_SECTIONSTb4b4b4)Tb4b4b4.Te6edf3toEqualTb4b4b4(Te6edf3SETTINGS_TABSTb4b4b4.Te6edf3flatMapTb4b4b4(Tb4b4b4(Te6edf3tabTb4b4b4) Tb4b4b4=> Te6edf3tabTb4b4b4.Te6edf3sectionsTb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tffa657ObjectTb4b4b4.Te6edf3isFrozenTb4b4b4(Te6edf3ALL_SETTINGS_SECTIONSTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"uses unique tab ids and non-empty labels"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3ids Tff7b72= Te6edf3SETTINGS_TABSTb4b4b4.Te6edf3mapTb4b4b4(Tb4b4b4(Te6edf3tabTb4b4b4) Tb4b4b4=> Te6edf3tabTb4b4b4.Te6edf3idTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Tff7b72new Tffa657SetTb4b4b4(Te6edf3idsTb4b4b4)Tb4b4b4.Te6edf3sizeTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Te6edf3idsTb4b4b4.Te6edf3lengthTb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3tab Tff7b72of Te6edf3SETTINGS_TABSTb4b4b4) Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3tabTb4b4b4.Te6edf3labelKeyTb4b4b4.Te6edf3lengthTb4b4b4)Tb4b4b4.Te6edf3toBeGreaterThanTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3tabTb4b4b4.Te6edf3descriptionKeyTb4b4b4.Te6edf3lengthTb4b4b4)Tb4b4b4.Te6edf3toBeGreaterThanTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3tabTb4b4b4.Te6edf3sectionsTb4b4b4.Te6edf3lengthTb4b4b4)Tb4b4b4.Te6edf3toBeGreaterThanTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"covers every SettingsPage section key"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3sectionKey Tff7b72of Te6edf3KNOWN_SECTIONS_FROM_SETTINGS_PAGETb4b4b4) Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3ALL_SETTINGS_SECTIONSTb4b4b4)Tb4b4b4.Te6edf3toContainTb4b4b4(Te6edf3sectionKeyTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3settingsTabForSectionTb4b4b4(Te6edf3sectionKeyTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toBeNullTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"round-trips section to tab membership"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3sectionKey Tff7b72of Te6edf3ALL_SETTINGS_SECTIONSTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3tabId Tff7b72= Te6edf3settingsTabForSectionTb4b4b4(Te6edf3sectionKeyTb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3tabIdTb4b4b4)Tb4b4b4.Te6edf3notTb4b4b4.Te6edf3toBeNullTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3settingsSectionBelongsToTabTb4b4b4(Te6edf3sectionKeyTb4b4b4, Te6edf3tabIdTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72trueTb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3otherTab Tff7b72of Te6edf3SETTINGS_TABSTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3otherTabTb4b4b4.Te6edf3id Tff7b72=== Te6edf3tabIdTb4b4b4) Tb4b4b4{
Tff7b72continueTb4b4b4;
Tb4b4b4}
Te6edf3expectTb4b4b4(Te6edf3settingsSectionBelongsToTabTb4b4b4(Te6edf3sectionKeyTb4b4b4, Te6edf3otherTabTb4b4b4.Te6edf3idTb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Tff7b72falseTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"getSettingsTab returns tab metadata or null"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3expectTb4b4b4(Te6edf3getSettingsTabTb4b4b4(Ta5d6ff"network"Tb4b4b4)Tff7b72?Tb4b4b4.Te6edf3idTb4b4b4)Tb4b4b4.Te6edf3toBeTb4b4b4(Ta5d6ff"network"Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3getSettingsTabTb4b4b4(Ta5d6ff"missing"Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeNullTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3getSettingsTabTb4b4b4(Ta5d6ff""Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3toBeNullTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3itTb4b4b4(Ta5d6ff"uses i18n keys that exist in en.json"Tb4b4b4, Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3tab Tff7b72of Te6edf3SETTINGS_TABSTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3labelTail Tff7b72= Te6edf3tabTb4b4b4.Te6edf3labelKeyTb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff"settings.tabs."Tb4b4b4, Ta5d6ff""Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3descTail Tff7b72= Te6edf3tabTb4b4b4.Te6edf3descriptionKeyTb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff"settings.tabs."Tb4b4b4, Ta5d6ff""Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3enTb4b4b4.Te6edf3settingsTb4b4b4.Te6edf3tabsTb4b4b4[Te6edf3labelTailTb4b4b4]Tb4b4b4)Tb4b4b4.Te6edf3toBeTruthyTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3expectTb4b4b4(Te6edf3enTb4b4b4.Te6edf3settingsTb4b4b4.Te6edf3tabsTb4b4b4[Te6edf3descTailTb4b4b4]Tb4b4b4)Tb4b4b4.Te6edf3toBeTruthyTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────